/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package elaborate.vwbe.scripting;

import java.util.Iterator;

/**
 * A ScriptEngine is an instance of script execution simulator.
 * @author lendle
 */
public interface ScriptEngine {
    /**
     * Evaluate the given scripts. Note that script functions must be
     * evaluated before being invoked.
     * @param scripts
     * @return
     * @throws ScriptingException
     */
    public Object evalScripts(String scripts) throws ScriptingException;
    public Object invokeFunction(String functionName, Object... args) throws ScriptingException;
    public boolean isSupported(ScriptLanguage language);
    public Iterator<String> getDeclaredScriptFunctions();
    public ScriptEngineContext getContext();
}
